package com.hrt.common.web;

import com.btcode.db.sqlparameter.PageInfo;
import com.btcode.orm.filter.IFilter;
import com.btcode.orm.model.IModel;
import com.btcode.orm.model.ModelPageResult;
import java.util.List;

/**
 * 通用提炼出来的server接口
 *
 * @author gislin
 */
public interface IService {

    /**
     * 根据model的主键，获取指定model
     * @param model，model的主键值不能为空
     * @return
     */
    IModel getModel(IModel model);

    /**
     * 根据页面约定的传值,获取指定model
     * @param modelClass
     * @return
     */
    IModel getModelRequest(Class<? extends IModel> modelClass);

    /**
     * 插入指定的model
     * @param model
     */
    void create(IModel model);

    /**
     * 插入指定的model集合
     * @param models
     */
    void creates(List<? extends IModel> models);

    /**
     * 更新指定的model
     * @param model 主键不能为空
     */
    void update(IModel model);

    /**
     * 删除指定的model
     * @param model model主键值不能为空
     */
    void delete(IModel model);

    /**
     * 分页查询model集合
     * @param modelClass 要查询的modelclass
     * @param whereFilters 过滤条件
     * @param orderString 排序字符串，按照sql的规则写
     * @param pageInfo 分页信息
     * @return
     */
    ModelPageResult listModel(Class<? extends IModel> modelClass,
        List<IFilter> whereFilters,String orderString, PageInfo pageInfo);

    /**
     * 根据页面约定的传值，分页查询model集合，
     * @param modelClass 要查询的modelclass
     * @return
     */
    ModelPageResult listModelRequest(Class<? extends IModel> modelClass);

}
